#include <bits/stdc++.h>
using namespace std;
int n;
bool vis[200010];
struct node{
	int num,val;
}a[200020];
stack <int> st;
int main(){
	freopen("fruit.in","r",stdin);
	freopen("fruit.out","w",stdout);
	scanf("%d",&n);
	for (int i=1;i<=n;i++){
		scanf("%d",&a[i].val);
		a[i].num=i;
	}
	int begin=1;
	for (int i=1;i<=n;i++){
		for (int j=1;j<=n;j++){
			if(!vis[j]){
				begin=j;
				st.push(j);
				break;
			}
		}
		for (int j=begin;j<=n;j++){
			if(vis[j]){
				continue;
			}
			if(a[st.top()].val!=a[j].val){
				int nw=st.top();
				vis[nw]=true;
				printf("%d ",nw);
				st.pop();
				st.push(j);
			}
		}
		while(!st.empty()){
			vis[st.top()]=true;
			printf("%d ",st.top());
			st.pop();
		}
		printf("\n");
		int cnt=0;
		for (int j=1;j<=n;j++){
			if(!vis[j]){
				cnt++;
			}
		}
		if(cnt==0){
			break;
		}
	}
} 
